{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "from mpl_toolkits.mplot3d import Axes3D\n",
    "import warnings\n",
    "warnings.filterwarnings(action = 'ignore')\n",
    "%matplotlib inline\n",
    "plt.rcParams['font.sans-serif']=['SimHei']  #解决中文显示乱码问题\n",
    "plt.rcParams['axes.unicode_minus']=False\n",
    "import sklearn.linear_model as LM\n",
    "from sklearn.metrics import classification_report\n",
    "from sklearn.model_selection import cross_val_score,train_test_split\n",
    "from sklearn.datasets import make_regression\n",
    "from sklearn import tree\n",
    "from sklearn.preprocessing import LabelEncoder"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Age</th>\n",
       "      <th>Sex</th>\n",
       "      <th>BP</th>\n",
       "      <th>Cholesterol</th>\n",
       "      <th>Na</th>\n",
       "      <th>K</th>\n",
       "      <th>Drug</th>\n",
       "      <th>SexC</th>\n",
       "      <th>BPC</th>\n",
       "      <th>CholesterolC</th>\n",
       "      <th>Na/K</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>23</td>\n",
       "      <td>F</td>\n",
       "      <td>HIGH</td>\n",
       "      <td>HIGH</td>\n",
       "      <td>0.792535</td>\n",
       "      <td>0.031258</td>\n",
       "      <td>drugY</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>25.354629</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>47</td>\n",
       "      <td>M</td>\n",
       "      <td>LOW</td>\n",
       "      <td>HIGH</td>\n",
       "      <td>0.739309</td>\n",
       "      <td>0.056468</td>\n",
       "      <td>drugC</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>13.092530</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>47</td>\n",
       "      <td>M</td>\n",
       "      <td>LOW</td>\n",
       "      <td>HIGH</td>\n",
       "      <td>0.697269</td>\n",
       "      <td>0.068944</td>\n",
       "      <td>drugC</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>10.113556</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>28</td>\n",
       "      <td>F</td>\n",
       "      <td>NORMAL</td>\n",
       "      <td>HIGH</td>\n",
       "      <td>0.563682</td>\n",
       "      <td>0.072289</td>\n",
       "      <td>drugX</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>7.797618</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>61</td>\n",
       "      <td>F</td>\n",
       "      <td>LOW</td>\n",
       "      <td>HIGH</td>\n",
       "      <td>0.559294</td>\n",
       "      <td>0.030998</td>\n",
       "      <td>drugY</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>18.042906</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Age Sex      BP Cholesterol        Na         K   Drug  SexC  BPC  \\\n",
       "0   23   F    HIGH        HIGH  0.792535  0.031258  drugY     0    0   \n",
       "1   47   M     LOW        HIGH  0.739309  0.056468  drugC     1    1   \n",
       "2   47   M     LOW        HIGH  0.697269  0.068944  drugC     1    1   \n",
       "3   28   F  NORMAL        HIGH  0.563682  0.072289  drugX     0    2   \n",
       "4   61   F     LOW        HIGH  0.559294  0.030998  drugY     0    1   \n",
       "\n",
       "   CholesterolC       Na/K  \n",
       "0             0  25.354629  \n",
       "1             0  13.092530  \n",
       "2             0  10.113556  \n",
       "3             0   7.797618  \n",
       "4             0  18.042906  "
      ]
     },
     "execution_count": 104,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data=pd.read_csv('药物研究.txt')\n",
    "le = LabelEncoder()\n",
    "le.fit(data[\"Sex\"])\n",
    "data[\"SexC\"]=le.transform(data[\"Sex\"])\n",
    "data[\"BPC\"]=le.fit(data[\"BP\"]).transform(data[\"BP\"])\n",
    "data[\"CholesterolC\"]=le.fit(data[\"Cholesterol\"]).transform(data[\"Cholesterol\"])\n",
    "data[\"Na/K\"]=data[\"Na\"]/data[\"K\"]\n",
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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r7/eVpC/9tpr1NfXc8EFF+zV12aMMWbfYUV2iJHn/Aruex6W/hWm/Ge044SZOnVqtCN0yeV8LmcDt/PtTbY9jTifcNvbrP+qfrftIw5M5OkfTerWa6SkpHS6LybGu6577dq1fPe73w3bJyLccccdXH/99Sxfvpzly5dTUlJCRUUFKSkppKSk8Pzzz4dNHbnjjjuorq6msrKy7WYyDQ0NtLS0MHPmTE455RTWr1/PxRdfzIcffth2J8eWlhZU1ek/powxxvQ9W10kREllnTeKXfwYtOzdaFpfKynp8K70znA5n8vZwO18kcz201NHkxgXCNuWGBfgp6eO7nYfO3bs6HTftm3bePvttykrKyMrKyts36pVq1i1ahWPP/44a9asYc6cOZx77rn88Ic/5Ec/+hGXXXZZWIH94osv8tOf/pQXX3yRwYMHk5aWxlNPPUVhYSFXXHEFgUCAzZs38/3vf58xY8Zw1llnMWLECL75zW9yxhln8M4777QV/cYYY74e7KwfIicnBybMgK8+h7VvRztOmJycrkcFo83lfC5nA7fzRTLbOceM4L+nH8WIAxMRvBHs/55+VI8uekxMTOxwe2NjI4888ggffvhh29fQenMYVWXkyJHceuutJCcn8/rrrzNz5kzGjBlDS0sLI0aM4NFHH+Xjj72LMD/99FMaGhoYNmwYF1xwAddeey23334706dPb7sI8oMPPuCkk07i9ttv54EHHmDu3LmcdNJJPPjgg8ydO5dp06btxTtljDFmXySqGu0MfS4/P19bf/l1R+gyYocdEMvr+iPiR58M3/1LBFP2zIoVKxg7dmy0Y3TK5XwuZwO38/U02yeffMKYMWMimChcfX19h4X2008/TXV1NUuXLuXXv/41w4cPp76+nvj4eK6++momT55MSUkJM2fO5MMPP+Tggw9mx44d3HLLLTz33HPU19fzySefcP7551NRUUEwGOSqq67illtuYdIkbyrL6tWruemmm7j66qs55JBDqK+v59577+Xzz72LNletWsVhhx1GQkICTU1N3H333eTl5YXl7Oj9EpEiVc2P0FvmpJ6es40x7vq6LeHX1Tn7az8nu/0yYhXbdnJR3M+ZcdipuLQWwMaNG50txMDtfC5nA7fzuZwNYOfOnR1u7+gCw9Zi/P777wfgBz/4AUBbkdt685iEhAQAjjrqKAAyMjIA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\n",
      "text/plain": [
       "<Figure size 864x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "X=data[['Age','SexC','BPC','CholesterolC','Na/K']]\n",
    "Y=data['Drug']\n",
    "X_train, X_test, Y_train, Y_test = train_test_split(X,Y,train_size=0.70, random_state=123)\n",
    "trainErr=[]\n",
    "testErr=[]\n",
    "K=np.arange(2,10)\n",
    "for k in K:\n",
    "    modelDTC = tree.DecisionTreeClassifier(max_depth=k,random_state=123)\n",
    "    modelDTC.fit(X_train,Y_train)\n",
    "    trainErr.append(1-modelDTC.score(X_train,Y_train))\n",
    "    testErr.append(1-modelDTC.score(X_test,Y_test))\n",
    "fig,axes=plt.subplots(nrows=1,ncols=2,figsize=(12,4))\n",
    "axes[0].grid(True, linestyle='-.')\n",
    "axes[0].plot(np.arange(2,10),trainErr,label=\"训练误差\",marker='o',linestyle='-')\n",
    "axes[0].plot(np.arange(2,10),testErr,label=\"测试误差\",marker='o',linestyle='-.')\n",
    "axes[0].set_xlabel(\"树深度\")\n",
    "axes[0].set_ylabel(\"误差\")\n",
    "axes[0].set_title('树深度和误差')\n",
    "axes[0].legend()\n",
    "\n",
    "bestK=K[testErr.index(np.min(testErr))]\n",
    "modelDTC = tree.DecisionTreeClassifier(max_depth=bestK,random_state=123)\n",
    "modelDTC.fit(X_train,Y_train)\n",
    "axes[1].bar(np.arange(5),modelDTC.feature_importances_)\n",
    "axes[1].set_title('输入变量的重要性')\n",
    "axes[1].set_xlabel('输入变量')\n",
    "axes[1].set_xticks(np.arange(5))\n",
    "axes[1].set_xticklabels(['年龄','性别','血压','胆固醇','Na/K'])\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "模型的评价：\n",
      "               precision    recall  f1-score   support\n",
      "\n",
      "       drugA       1.00      0.96      0.98        23\n",
      "       drugB       0.94      1.00      0.97        16\n",
      "       drugC       1.00      1.00      1.00        16\n",
      "       drugX       1.00      1.00      1.00        54\n",
      "       drugY       1.00      1.00      1.00        91\n",
      "\n",
      "    accuracy                           0.99       200\n",
      "   macro avg       0.99      0.99      0.99       200\n",
      "weighted avg       1.00      0.99      1.00       200\n",
      "\n",
      "|--- feature_4 <= 14.83\n",
      "|   |--- feature_2 <= 0.50\n",
      "|   |   |--- feature_0 <= 49.50\n",
      "|   |   |   |--- class: drugA\n",
      "|   |   |--- feature_0 >  49.50\n",
      "|   |   |   |--- class: drugB\n",
      "|   |--- feature_2 >  0.50\n",
      "|   |   |--- feature_2 <= 1.50\n",
      "|   |   |   |--- feature_3 <= 0.50\n",
      "|   |   |   |   |--- class: drugC\n",
      "|   |   |   |--- feature_3 >  0.50\n",
      "|   |   |   |   |--- class: drugX\n",
      "|   |   |--- feature_2 >  1.50\n",
      "|   |   |   |--- class: drugX\n",
      "|--- feature_4 >  14.83\n",
      "|   |--- class: drugY\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(\"模型的评价：\\n\",classification_report(Y,modelDTC.predict(X)))\n",
    "print(tree.export_text(modelDTC))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "metadata": {},
   "outputs": [],
   "source": [
    "?tree.DecisionTreeClassifier"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
